
/**
 * 米勒投影算法
 *    简单的说，就是假设有一个和赤道垂直的圆柱套在地球上，然后在地心点亮一盏灯，灯光将地球各个点投影在圆柱上，在把圆柱展开，就得到地球的平面投影了
 */
function millerConvertion(lon, lat) {
  lon = parseFloat(lon);
  lat = parseFloat(lat);
  const L = 6381372 * Math.PI * 2; // 地球周长
  const W = L; // 平面展开后， x 轴等于周长
  const H = L / 2; // y 轴约等于周长的一半
  const mill = 2.3; // 米勒投影中的一个常数，范围大于在正负2.3间
  let x = lon * Math.PI / 180; // 经度的角度值转为弧度值
  let y = lat * Math.PI / 180; // 纬度的角度值转为弧度值
  y = 1.25 * Math.log(Math.tan(.25 * Math.PI + .4 * y)); // 米勒投影转换
  // 弧度值转为实际距离
  x = (W / 2) + (W / (2 * Math.PI)) * x;
  y = (H / 2) - (H / (2 * mill)) * y;
  return [x, y];
}